package com.neusoft.tijian.controller;

import com.neusoft.tijian.config.PageResult;
import com.neusoft.tijian.po.Orders;
import com.neusoft.tijian.service.IOrdersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 用户端订单控制器（处理“我的预约”请求）
 * 与医生端 OrdersController 区分，避免接口混淆
 */
@RestController
@RequestMapping("/user/orders")  // 路径前缀加/user，明确用户端接口
public class OrdersUserController {

    @Autowired
    private IOrdersService ordersService;

    /**
     * 1. 查询当前用户的预约列表（分页）
     * 前端请求：GET /user/orders/listUserOrders?userId=xxx&pageNum=1&pageSize=10
     * @param userId 用户ID（从前端sessionStorage获取）
     * @param pageNum 当前页码（默认1）
     * @param pageSize 每页条数（默认10）
     * @return 分页结果（PageResult）
     */
    @GetMapping("/listUserOrders")
    public PageResult<Orders> listUserOrders(
            @RequestParam("userId") String userId,
            @RequestParam(defaultValue = "1") Integer pageNum,
            @RequestParam(defaultValue = "10") Integer pageSize
    ) {
        // 调用Service查询，直接返回分页结果（适配前端分页组件）
        return ordersService.listUserOrders(userId, pageNum, pageSize);
    }

    /**
     * 2. 取消预约
     * 前端请求：POST /user/orders/cancelOrder
     * @param params 包含orderId的JSON参数
     * @return 结果：{success: true/false, message: "提示信息"}
     */
    @PostMapping("/cancelOrder")
    public Map<String, Object> cancelOrder(@RequestBody Map<String, Integer> params) {
        Integer orderId = params.get("orderId");
        Integer result = ordersService.cancelUserOrder(orderId);

        // 构造前端易懂的返回结果
        if (result == 1) {
            Map<String, Object> res = new HashMap<>();
            res.put("success", true);
            res.put("message", "取消预约成功！");
            return res;
        } else {
            Map<String, Object> res = new HashMap<>();
            res.put("success", false);
            res.put("message", "取消预约失败（预约不存在或已取消）！");
            return res;
        }
    }
}